package jpg2.jpg2zad4;

import java.util.ArrayList;
import java.util.List;

/**
 * Autor: Daniel Michalski
 * Data: 05.07.13
 */

public class Main {
    public static void main(String[] args) {
        Person maz = new Person("Tomasz", "Kowalski", Plec.mezczyzna);
        Person zona = new Person("Katarzybna", "Malinowska", Plec.kobieta);

        Person dziecko1 = new Person("imie1", "nazwisko1", Plec.kobieta);
        Person dziecko2 = new Person("imie2", "nazwisko2", Plec.mezczyzna);
        Person dziecko3 = new Person("imie3", "nazwisko3", Plec.kobieta);

        List<Person> dzieci = new ArrayList<Person>();
        dzieci.add(dziecko1);
        dzieci.add(dziecko2);
        dzieci.add(dziecko3);

        Family family = new Family(maz, zona, dzieci);
        System.out.println(family);

        try {
            Family family2 = new Family(maz, zona);
            System.out.println(family2);
        } catch (NieprawidlowaRodzinaException e) {
            System.out.println("Nie mozna utworzyc rodziny, nieprawidlowe płci");
        }

    }
}

class NieprawidlowaRodzinaException extends Exception {}

enum Plec {
    mezczyzna,
    kobieta
}

class Person {
    private String imie;
    private String nazwisko;
    private Plec plec;

    public Person(String imie, String nazwisko, Plec plec) {
        this.imie = imie;
        this.nazwisko = nazwisko;
        this.plec = plec;
    }

    public String getImie() {
        return imie;
    }

    public String getNazwisko() {
        return nazwisko;
    }

    public Plec getPlec() {
        return plec;
    }

    @Override
    public String toString() {
        return "Person{" +
                "imie='" + imie + '\'' +
                ", nazwisko='" + nazwisko + '\'' +
                ", plec=" + plec +
                '}';
    }
}

class Family {
    private Person maz;
    private Person zona;
    private List<Person> dzieci;

    public Family(Person maz, Person zona, List<Person> dzieci) {
        this.maz = maz;
        this.zona = zona;
        this.dzieci = dzieci;
    }

    public Family(Person person1, Person person2) throws NieprawidlowaRodzinaException {
        if (person1.getPlec() != person2.getPlec()) {
            if (person1.getPlec() == Plec.mezczyzna) {
                this.maz = person1;
                this.zona = person2;
            } else {
                this.maz = person2;
                this.zona = person1;
            }

            dzieci = new ArrayList<Person>();
        } else {
            throw new NieprawidlowaRodzinaException();
        }
    }

    @Override
    public String toString() {
        return "Family{" +
                "maz=" + maz +
                ", zona=" + zona +
                ", dzieci=" + dzieci +
                '}';
    }
}
